---
title: 'Get started with Redpanda'
sidebarTitle: 'Redpanda'
description: 'Learn how to setup Postgres change data capture (CDC) to a Redpanda cluster in under 10 minutes. Setup a robust pipeline with backfills, inserts, updates, and deletes.'
---

import QuickstartInitialSteps from '/snippets/quickstart-initial-steps.mdx';
import QuickstartSourceStep from '/snippets/quickstart-source-step.mdx';
import QuickstartBackfillStep from '/snippets/quickstart-backfill-step.mdx';

In this quickstart, you'll create a real-time data pipeline that streams changes from a Postgres database to a Redpanda cluster. You'll:

- Sign up for a Redpanda account
- Create a Redpanda cluster and topic
- Boot Sequin
- Create a sink to stream changes to Redpanda
- See changes flow from a sample database to Redpanda in real-time

By the end, you'll have hands-on experience setting up Postgres change data capture (CDC) with Sequin. This same pattern can be used to setup your own Postgres CDC pipeline with Redpanda.

<Tip>
  This is the quickstart for streaming Postgres to Redpanda. See the [how-to guide](/how-to/stream-postgres-to-kafka) for an explanation of how to use the Kafka sink or the [reference](/reference/sinks/kafka) for details on all configuration options.
</Tip>

<Steps titleSize="h2">
 <Step title="Setup Redpanda" icon="database">
  First, let's get your Redpanda cluster ready:
  <Steps>
    <Step title="Create a Redpanda account">
      Sign up for or sign in to your [Redpanda account](https://cloud.redpanda.com).

      <Note>
        Redpanda provides a generous free tier.
      </Note>
    </Step>

    <Step title="Create a topic">
      Once your cluster is ready, create a new topic called `products`. A single partition is fine.
    </Step>

    <Step title="Create a user for Sequin">
      1. Navigate to "Security" and click "Create User".
      2. Enter `sequin` as the username.
      3. Copy the auto-generated password. You'll need this in a moment.
      4. For SASL Mechanism, select `SCRAM-SHA-256`.
      5. Click "Create".
    </Step>
    <Step title="Create an ACL for the Sequin user">
      Now, create an ACL for the Sequin user to allow it to publish to the `products` topic:

      1. Navigate to "Security" and to the "ACLs" tab.
      2. Click "Create ACL".
      3. For "User / Principal", enter `sequin`.
      4. For "Host", enter `*`. This will let `sequin` connect from any host.
      5. In the "Topics" section, under "Operations", toggle "All" to "Allow".
      6. You can leave the rest of the ACL sections set to their defaults ("Not set").
      7. Click "Ok".

      <Frame>
        <img style={{ maxWidth: '700px' }} src="/images/quickstart/redpanda/redpanda-acl.png" alt="Create ACL for Sequin user" />
      </Frame>
    </Step>
  </Steps>

    <Check>
      You've created a Redpanda cluster, topic, and user.
    </Check>
 </Step>

 <QuickstartInitialSteps />

 <Step title="Create a Kafka Sink" icon="database">
  With the playground database connected, you can create a [sink](/reference/sinks/overview). This sink will send changes to the `products` table to your Redpanda topic:

  <Steps>
    <Step title="Navigate to Sinks">
      Click "Sinks" in the sidebar navigation, then click "Create Sink".
    </Step>

    <Step title="Select sink type">
      Select "Kafka" as the sink type and click "Continue".
    </Step>

    <QuickstartSourceStep />
    <QuickstartBackfillStep />

    <Step title='Configure "Kafka Configuration"'>
      In the "Kafka Configuration" card, enter your Redpanda connection details:

      - Hosts: Your Redpanda bootstrap server (e.g., `seed-xxx.redpanda.com:9092`)
        - Find this in "Overview" > "Kafka API" > "Boostrap server URLs"
      - Topic: `products`
      - SASL Mechanism: Select `SCRAM-SHA-256`
      - Username: `sequin`
      - Password: The auto-generated password for the `sequin` user
      - TLS: Toggle ON

      <Frame>
        <img style={{ maxWidth: '700px' }} src="/images/quickstart/redpanda/kafka-config-card.png" alt="Kafka configuration card" />
      </Frame>
    </Step>

    <Step title="Test the connection">
      At the bottom of the form, click the "Test Connection" button. If you provided proper credentials, it should succeed.

      <Check>
        Sequin can connect to your Redpanda cluster.
      </Check>
    </Step>

    <Step title="Create the sink">
      You can leave the rest of the defaults. As configured, the Redpanda topic will first receive a backfill of all rows currently in the `products` table. Then, it will receive all changes to the `products` table in real-time.

      Click "Create Sink" to finish setting up your sink.
    </Step>
  </Steps>
 </Step>

  <Step title="See changes flow to your Redpanda topic" icon="waveform-lines">
    On the new sink's overview page, you should see the "Health" status turn green, indicating data is flowing to your topic.

    Let's confirm messages are flowing:

    <Steps>
    <Step title="Messages tab">
      Click the "Messages" tab. You'll see a list of the recently delivered messages:

      <Frame>
        <img style={{ maxWidth: '700px' }} src="/images/quickstart/kafka/messages-tab.png" alt="List of recently delivered messages" />
      </Frame>

      <Check>
        Sequin indicates it backfilled the `products` table to your Redpanda topic.
      </Check>
    </Step>
      <Step title="View in Redpanda Console">
        In the Redpanda Console, in the "Topics" tab of your cluster, navigate to the `products` topic. You should see the messages that were sent from Sequin. These are [`read` events](/reference/messages) from the initial backfill of the `products` table:

         <Frame>
          <img style={{ maxWidth: '700px' }} src="/images/quickstart/redpanda/redpanda-topic-messages.png" alt="Messages in Redpanda Console" />
        </Frame>

        <Info>
          If the messages haven't appeared yet, refresh the page.
        </Info>

        <Check>
          Messages are flowing from Sequin to your Redpanda topic.
        </Check>
      </Step>

      <Step title="Make some changes">
        Let's make some changes to the `products` table and see them flow to your topic.

        In your terminal, run the following command to insert a new row into the `products` table:

        ```bash
        docker exec -i sequin-sequin_postgres-1 \
          psql -U postgres -d sequin_playground -c \
          "insert into products (name, price) values ('Organic Honey (16 oz)', 12.99);"
        ```

        Check your Redpanda Console. After refreshing, you should see a new message corresponding to the inserted row.

        Feel free to try other changes:

        <AccordionGroup>
          <Accordion title="Update a product's price">
            ```bash
            docker exec -i sequin-sequin_postgres-1 \
              psql -U postgres -d sequin_playground -c \
              "update products set price = 7.99 where name = 'Avocados (3 pack)';"
            ```
          </Accordion>

          <Accordion title="Change a product's name">
            ```bash
            docker exec -i sequin-sequin_postgres-1 \
              psql -U postgres -d sequin_playground -c \
              "update products set name = 'Organic Avocados (3 pack)' where name = 'Avocados (3 pack)';"
            ```
          </Accordion>

          <Accordion title="Delete a product">
            ```bash
            docker exec -i sequin-sequin_postgres-1 \
              psql -U postgres -d sequin_playground -c \
              "delete from products where name = 'Blueberries (6 oz)';"
            ```
          </Accordion>
        </AccordionGroup>

        Each change will appear in your Redpanda topic within a few seconds.
      </Step>
    </Steps>
  </Step>
</Steps>

<Check>
  Great work!
</Check>

You've successfully:

- Set up a complete Postgres change data capture pipeline
- Created a Redpanda cluster and topic
- Loaded existing data through a backfill
- Made changes to the `products` table
- Verified changes are flowing to your Redpanda topic

## Ready to stream

Now you're ready to connect your own database to Sequin and start streaming changes:

<CardGroup cols={2}>
  <Card title="Guide: Connect Postgres" icon="elephant" href="/connect-postgres">
    Connect your Postgres database to Sequin.
  </Card>
  <Card title="Guide: Setting up a Kafka sink" icon="database" href="/how-to/stream-postgres-to-kafka">
    Setup a Kafka sink to send changes to your topic.
  </Card>
</CardGroup>